
#ifndef XDNS_SERVER_SELECTOR_H
#define XDNS_SERVER_SELECTOR_H

#include "xdns.h"
#include <vector>

class XdnsServerState;

class XdnsServerSelector
{
public:
    XdnsServerSelector();
    virtual ~XdnsServerSelector();

    /*! Initialize a new XDNS server selector.

        @param serverStates Vector of the DNS server states which are
                            used to select from. This function does not
                            takes the ownership of the XdnsServerState
                            pointers.
        @param serverSelector On return the initialized server selector.
    */
    static XdnsError Init(const std::vector<XdnsServerState*>& serverStates,
                          XdnsServerSelector** serverSelector);

    static void Release(XdnsServerSelector* serverSelector);


    // gupeng Add interfaces when implementing the XdnsServerManagerImpl.
};

#endif  // XDNS_SERVER_SELECTOR_H

